package iechecs;


import iechecs.type.Liste;
import echecs.APiece;
import echecs.Case;
import echecs.Couleur;
import echecs.Direction;
import echecs.Generateur;
import echecs.Piece;
import echecs.Position;


public interface IEchecs extends IConstantes
{

//    public enum Couleur {
//
//        blanc, noir
//    }
    public enum PositionType
    {

        test, initiale
    }

    APiece getPiece(Case c);

    FonctionPosition getPos_courante();

    void placer(Piece piece, Chaine Scase);

    void test();

    Couleur getColorAnalyse();

    Liste getListecoups();

    Position getPosition();

    void search();

    void search(Couleur color);

    void triCoups();

    Nat getU();

    Nat getV();

    Direction next();

    Liste getListcoupspiece();

    boolean isCouleurOpposite(APiece piece);

    void search(final Case case_courante);

    void search(final Generateur generateur, final Case case_courante);

    @Override
    String toString();

    Case getArrivee();

    Case getDepart();

    APiece getPiece();

//    @Override
//    boolean equals(Object o);
    Nat getX();

    Nat getY();

//    @Override
//    int hashCode();
    Case plus(Direction dir);

    Chaine toChaine();
}
